// https://leetcode.cn/problems/excel-sheet-column-title/description/

// 算法思路总结：
// 1. Excel列名特殊进制转换（1-based 26进制）
// 2. 核心处理：通过减1适配标准字符映射
// 3. 前插法构建结果，避免最后反转操作
// 4. 边界处理：检查非正数输入情况
// 5. 时间复杂度：O(log26(n))，空间复杂度：O(log26(n))

#include <iostream>
using namespace std;

#include <vector>
#include <algorithm>
#include <string>

class Solution 
{
public:
    string convertToTitle(int columnNumber) 
    {
        string res;

        while (columnNumber > 0)
        {
            columnNumber--;
            res += columnNumber % 26 + 'A';
            columnNumber /= 26;
        }
        reverse(res.begin(), res.end());

        return res;
    }
};

int main()
{
    int columnNumber1 = 1, columnNumber2 = 28, columnNumber3 = 2147483647;
    Solution sol;

    cout << sol.convertToTitle(columnNumber1) << endl;
    cout << sol.convertToTitle(columnNumber2) << endl;
    cout << sol.convertToTitle(columnNumber3) << endl;

    return 0;
}